home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / captain / code.lua next >
Text File  |  2005-07-16  |  16KB  |  469 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky15.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.kec1 = random(5)
  16.         repeat
  17.             room.kec2 = random(5)
  18.         until room.kec2 ~= room.kec1
  19.         repeat
  20.             room.kec3 = random(5)
  21.         until room.kec3 ~= room.kec1 and room.kec3 ~= room.kec2
  22.         repeat
  23.             room.kec4 = random(5)
  24.         until room.kec4 ~= room.kec1 and room.kec4 ~= room.kec2 and room.kec4 ~= room.kec3
  25.         room.kecdel1 = random(300) + 300
  26.         room.kecdel2 = random(1000) + 1000
  27.         room.kecdel3 = random(3000) + 3000
  28.         room.kecdel4 = random(10000) + 10000
  29.         room.uvod = 0
  30.         room.ohaku = 0
  31.         room.ooku = 0
  32.  
  33.         return function()
  34.             if no_dialog() and isReady(small) and isReady(big) then
  35.                 for pom1 = 1, 1 do
  36.                     if room.kecdel1 > 0 then
  37.                         room.kecdel1 = room.kecdel1 - 1
  38.                     end
  39.                     if room.kecdel2 > 0 then
  40.                         room.kecdel2 = room.kecdel2 - 1
  41.                     end
  42.                     if room.kecdel3 > 0 then
  43.                         room.kecdel3 = room.kecdel3 - 1
  44.                     end
  45.                     if room.kecdel4 > 0 then
  46.                         room.kecdel4 = room.kecdel4 - 1
  47.                     end
  48.                 end
  49.                 pom1 = -1
  50.                 if room.uvod == 0 then
  51.                     room.uvod = 1
  52.                     pom1 = random(4)
  53.                     adddel(10 + random(30))
  54.                     switch(pom1){
  55.                         [0] = function()
  56.                             addm(0, "vl-m-hara")
  57.                         end,
  58.                         [3] = function()
  59.                             addv(0, "vl-v-kaj1")
  60.                         end,
  61.                         default = function()
  62.                             addm(0, "vl-m-hara")
  63.                             addv(5 + random(10), "vl-v-kaj"..pom1)
  64.                         end,
  65.                     }
  66.                     pom1 = -1
  67.                 elseif room.ohaku == 0 and look_at(small, hakahak) and dist(small, hakahak) <= 2 and random(100) < 1 then
  68.                     room.ohaku = 1
  69.                     addm(20, "vl-m-hak")
  70.                     addv(random(10) + 5, "vl-v-lodni")
  71.                     planDialogSet(3, "vl-x-site", 301, hakahak, "cinnost")
  72.                 elseif room.kecdel1 == 0 then
  73.                     room.kecdel1 = -1
  74.                     pom1 = room.kec1
  75.                 elseif room.kecdel2 == 0 then
  76.                     room.kecdel2 = -1
  77.                     pom1 = room.kec2
  78.                 elseif room.kecdel3 == 0 then
  79.                     room.kecdel3 = -1
  80.                     pom1 = room.kec3
  81.                 elseif room.kecdel4 == 0 then
  82.                     room.kecdel4 = -1
  83.                     pom1 = room.kec4
  84.                 elseif room.ooku == 0 and dist(small, ocko) <= 3 and random(100) < 1 then
  85.                     room.ooku = 1
  86.                     addm(10, "vl-m-oko")
  87.                     if random(100) < 25 then
  88.                         addv(10, "vl-v-silha")
  89.                     end
  90.                 elseif room.ooku == 0 and dist(big, ocko) <= 4 and random(100) < 1 then
  91.                     room.ooku = 1
  92.                     addv(10, "vl-v-silha")
  93.                 end
  94.                 if pom1 >= 0 then
  95.                     if pom1 == 4 then
  96.                         pom2 = 102
  97.                     else
  98.                         pom2 = 101
  99.                     end
  100.                     planDialogSet(30, "vl-leb-kecy"..pom1, pom2, lebkic, "cinnost")
  101.                 end
  102.             end
  103.         end
  104.     end
  105.  
  106.     -- -------------------------------------------------------------
  107.     local function prog_init_diamant3()
  108.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  109.  
  110.         diamant3.faze = 0
  111.  
  112.         return function()
  113.             switch(diamant3.faze){
  114.                 [0] = function()
  115.                     if random(100) < 5 then
  116.                         diamant3.faze = diamant3.faze + 1
  117.                     end
  118.                 end,
  119.                 [7] = function()
  120.                     diamant3.faze = 0
  121.                 end,
  122.                 default = function()
  123.                     if isIn(diamant3.faze, {1, 2, 3}) then
  124.                         diamant3.afaze = diamant3.afaze + 1
  125.                         diamant3.faze = diamant3.faze + 1
  126.                     elseif isIn(diamant3.faze, {4, 5, 6}) then
  127.                         diamant3.afaze = diamant3.afaze - 1
  128.                         diamant3.faze = diamant3.faze + 1
  129.                     end
  130.                 end,
  131.             }
  132.             diamant3:updateAnim()
  133.         end
  134.     end
  135.  
  136.     -- -------------------------------------------------------------
  137.     local function prog_init_ocko()
  138.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  139.  
  140.         ocko.cinnost = 0
  141.  
  142.         return function()
  143.             if ocko.cinnost == 0 then
  144.                 if random(100) < 10 then
  145.                     local rand8 = random(8)
  146.                     switch(rand8){
  147.                         [3] = function()
  148.                             ocko.citac = random(3) + 2
  149.                             ocko.cinnost = 2
  150.                             ocko.faze = random(2) * 2
  151.                         end,
  152.                         [7] = function()
  153.                             ocko.citac = random(10) + 2
  154.                             ocko.cinnost = 5
  155.                         end,
  156.                         default = function()
  157.                             if 0 <= rand8 and rand8 <= 2 then
  158.                                 ocko.citac = random(5) + 5
  159.                                 ocko.cinnost = 1
  160.                                 ocko.faze = random(2) * 2
  161.                             elseif 4 <= rand8 and rand8 <= 6 then
  162.                                 ocko.citac = random(12) + 12
  163.                                 ocko.cinnost = 3 + random(2)
  164.                             end
  165.                         end
  166.                     }
  167.                 end
  168.             elseif ocko.cinnost == 1 or ocko.cinnost == 2 then
  169.                 switch(ocko.faze){
  170.                     [0] = function()
  171.                         if ocko.cinnost == 1 then
  172.                             ocko.afaze = 1
  173.                         else
  174.                             ocko.afaze = 3
  175.                         end
  176.                         if random(100) < 20 then
  177.                             ocko.faze = ocko.faze + 1
  178.                         end
  179.                     end,
  180.                     [1] = function()
  181.                         ocko.afaze = 0
  182.                         ocko.faze = ocko.faze + 1
  183.                     end,
  184.                     [2] = function()
  185.                         if ocko.cinnost == 1 then
  186.                             ocko.afaze = 2
  187.                         else
  188.                             ocko.afaze = 4
  189.                         end
  190.                         if random(100) < 20 then
  191.                             ocko.faze = ocko.faze + 1
  192.                         end
  193.                     end,
  194.                     [3] = function()
  195.                         ocko.afaze = 0
  196.                         ocko.citac = ocko.citac - 1
  197.                         if ocko.citac == 0 then
  198.                             ocko.cinnost = 0
  199.                         else
  200.                             ocko.faze = 0
  201.                         end
  202.                     end,
  203.                 }
  204.             elseif isIn(ocko.cinnost, {3, 4, 5}) then
  205.                 switch(ocko.cinnost){
  206.                     [3] = function()
  207.                         switch(ocko.afaze){
  208.                             [0] = function()
  209.                                 ocko.afaze = random(4) + 1
  210.                             end,
  211.                             [1] = function()
  212.                                 ocko.afaze = 3
  213.                             end,
  214.                             [2] = function()
  215.                                 ocko.afaze = 4
  216.                             end,
  217.                             [3] = function()
  218.                                 ocko.afaze = 2
  219.                             end,
  220.                             [4] = function()
  221.                                 ocko.afaze = 1
  222.                             end,
  223.                         }
  224.                     end,
  225.                     [4] = function()
  226.                         switch(ocko.afaze){
  227.                             [0] = function()
  228.                                 ocko.afaze = random(4) + 1
  229.                             end,
  230.                             [1] = function()
  231.                                 ocko.afaze = 4
  232.                             end,
  233.                             [2] = function()
  234.                                 ocko.afaze = 3
  235.                             end,
  236.                             [3] = function()
  237.                                 ocko.afaze = 1
  238.                             end,
  239.                             [4] = function()
  240.                                 ocko.afaze = 2
  241.                             end,
  242.                         }
  243.                     end,
  244.                     [5] = function()
  245.                         if random(100) < 40 then
  246.                             ocko.afaze = random(5)
  247.                         end
  248.                     end,
  249.                 }
  250.                 ocko.citac = ocko.citac - 1
  251.                 if ocko.citac == 0 then
  252.                     ocko.cinnost = 0
  253.                     ocko.afaze = 0
  254.                 end
  255.             end
  256.             ocko:updateAnim()
  257.         end
  258.     end
  259.  
  260.     -- -------------------------------------------------------------
  261.     local function prog_init_lebkic()
  262.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  263.  
  264.         lebkic.cinnost = 0
  265.  
  266.         return function()
  267.             if odd(game_getCycles()) then
  268.                 switch(lebkic.cinnost){
  269.                     [0] = function()
  270.                         if random(100) < 3 then
  271.                             lebkic.afaze = 1
  272.                         else
  273.                             lebkic.afaze = 0
  274.                         end
  275.                     end,
  276.                     [101] = function()
  277.                         lebkic.afaze = random(3)
  278.                         if lebkic.afaze > 0 then
  279.                             lebkic.afaze = lebkic.afaze + 1
  280.                         end
  281.                     end,
  282.                     [102] = function()
  283.                         lebkic.afaze = random(4)
  284.                     end,
  285.                 }
  286.             end
  287.             lebkic:updateAnim()
  288.         end
  289.     end
  290.  
  291.     -- -------------------------------------------------------------
  292.     local function prog_init_diamant1()
  293.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  294.  
  295.         diamant1.faze = 0
  296.  
  297.         return function()
  298.             switch(diamant1.faze){
  299.                 [0] = function()
  300.                     if random(100) < 5 then
  301.                         diamant1.faze = diamant1.faze + 1
  302.                     end
  303.                 end,
  304.                 [7] = function()
  305.                     diamant1.faze = 0
  306.                 end,
  307.                 default = function()
  308.                     if isIn(diamant1.faze, {1, 2, 3}) then
  309.                         diamant1.afaze = diamant1.afaze + 1
  310.                         diamant1.faze = diamant1.faze + 1
  311.                     elseif isIn(diamant1.faze, {4, 5, 6}) then
  312.                         diamant1.afaze = diamant1.afaze - 1
  313.                         diamant1.faze = diamant1.faze + 1
  314.                     end
  315.                 end,
  316.             }
  317.             diamant1:updateAnim()
  318.         end
  319.     end
  320.  
  321.     -- -------------------------------------------------------------
  322.     local function prog_init_hakahak()
  323.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  324.  
  325.         hakahak.cinnost = 0
  326.  
  327.         return function()
  328.             switch(hakahak.cinnost){
  329.                 [0] = function()
  330.                     hakahak.afaze = 0
  331.                 end,
  332.                 [301] = function()
  333.                     if hakahak.afaze == 0 or hakahak.afaze == 2 then
  334.                         hakahak.afaze = 1
  335.                     else
  336.                         hakahak.afaze = random(2) * 2
  337.                     end
  338.                 end,
  339.             }
  340.             hakahak:updateAnim()
  341.         end
  342.     end
  343.  
  344.     -- -------------------------------------------------------------
  345.     local function prog_init_diamantv()
  346.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  347.  
  348.         diamantv.faze = 0
  349.  
  350.         return function()
  351.             switch(diamantv.faze){
  352.                 [0] = function()
  353.                     if random(100) < 10 then
  354.                         if random(2) == 0 then
  355.                             diamantv.faze = 1
  356.                         else
  357.                             diamantv.faze = 11
  358.                         end
  359.                     end
  360.                 end,
  361.                 [7] = function()
  362.                     diamantv.faze = 0
  363.                 end,
  364.                 [12] = function()
  365.                     diamantv.afaze = 5
  366.                     diamantv.faze = diamantv.faze + 1
  367.                 end,
  368.                 [14] = function()
  369.                     diamantv.afaze = 0
  370.                     diamantv.faze = 0
  371.                 end,
  372.                 default = function()
  373.                     if isIn(diamantv.faze, {1, 2, 3}) then
  374.                         diamantv.afaze = diamantv.afaze + 1
  375.                         diamantv.faze = diamantv.faze + 1
  376.                     elseif isIn(diamantv.faze, {4, 5, 6}) then
  377.                         diamantv.afaze = diamantv.afaze - 1
  378.                         diamantv.faze = diamantv.faze + 1
  379.                     elseif isIn(diamantv.faze, {11, 13}) then
  380.                         diamantv.afaze = 4
  381.                         diamantv.faze = diamantv.faze + 1
  382.                     end
  383.                 end,
  384.             }
  385.             diamantv:updateAnim()
  386.         end
  387.     end
  388.  
  389.     -- -------------------------------------------------------------
  390.     local function prog_init_diamant2()
  391.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  392.  
  393.         diamant2.faze = 0
  394.  
  395.         return function()
  396.             switch(diamant2.faze){
  397.                 [0] = function()
  398.                     if random(100) < 5 then
  399.                         diamant2.faze = diamant2.faze + 1
  400.                     end
  401.                 end,
  402.                 [7] = function()
  403.                     diamant2.faze = 0
  404.                 end,
  405.                 default = function()
  406.                     if isIn(diamant2.faze, {1, 2, 3}) then
  407.                         diamant2.afaze = diamant2.afaze + 1
  408.                         diamant2.faze = diamant2.faze + 1
  409.                     elseif isIn(diamant2.faze, {4, 5, 6}) then
  410.                         diamant2.afaze = diamant2.afaze - 1
  411.                         diamant2.faze = diamant2.faze + 1
  412.                     end
  413.                 end,
  414.             }
  415.             diamant2:updateAnim()
  416.         end
  417.     end
  418.  
  419.     -- --------------------
  420.     local update_table = {}
  421.     local subinit
  422.     subinit = prog_init_room()
  423.     if subinit then
  424.         table.insert(update_table, subinit)
  425.     end
  426.     subinit = prog_init_diamant3()
  427.     if subinit then
  428.         table.insert(update_table, subinit)
  429.     end
  430.     subinit = prog_init_ocko()
  431.     if subinit then
  432.         table.insert(update_table, subinit)
  433.     end
  434.     subinit = prog_init_lebkic()
  435.     if subinit then
  436.         table.insert(update_table, subinit)
  437.     end
  438.     subinit = prog_init_diamant1()
  439.     if subinit then
  440.         table.insert(update_table, subinit)
  441.     end
  442.     subinit = prog_init_hakahak()
  443.     if subinit then
  444.         table.insert(update_table, subinit)
  445.     end
  446.     subinit = prog_init_diamantv()
  447.     if subinit then
  448.         table.insert(update_table, subinit)
  449.     end
  450.     subinit = prog_init_diamant2()
  451.     if subinit then
  452.         table.insert(update_table, subinit)
  453.     end
  454.     return update_table
  455. end
  456. local update_table = prog_init()
  457.  
  458.  
  459. -- -----------------------------------------------------------------
  460. -- Update
  461. -- -----------------------------------------------------------------
  462. function prog_update()
  463.     for key, subupdate in pairs(update_table) do
  464.         subupdate()
  465.     end
  466. end
  467.  
  468.  
  469.